package org.duang.db;

import java.util.List;

import org.duang.db.common.Query;
import org.duang.db.common.Update;

import com.mongodb.WriteResult;

/**
 * Dao接口，定义所有方法接口
 * @author laotang
 * @param <T>
 */
public interface IDao<T> {
	
	/**
	 * 保存对象
	 * @param 		待保存的对象
	 * @return		对象
	 */
	public boolean save(T entity) throws Exception;
	
	
	/**
	 * 根据条件更新字段
	 * @param query			查询条件
	 * @param update		更新内容
	 * @return
	 * @throws Exception
	 */
	public WriteResult update(Query query, Update update) throws Exception;
	
	/**
	 * 根据Query查找对象
	 * @param key		属性字段
	 * @param value		值
	 * @return			对象
	 */
	public T findOne(Query query) throws Exception;
	
	/**
	 * 根据Query查找对象集合
	 * @param query
	 * @return
	 * @throws Exception
	 */
	public List<T> findList(Query query) throws Exception ;
	
	/**
	 * 创建查询对象
	 * @return
	 */
	public Query<T> query();

}
